<?php
/**
 * @class		EditContentController
 * @ingroup		editable_pages_controllers
 * @brief		Controller của đối tượng EditablePage, hỗ trợ chỉnh sửa thông tin của 1 trang đơn
 * @author		BinhQD
 * @version		1.1
 * @date		2010-04-22
 */
App::import('Model','editable_pages.EditablePage');
class EditContentController extends AppController {
	/**
	 @var $name
	 @brief Tên của controller
	 */
	var $name = 'EditContent';
	
	/**
	 @var $uses
	 @brief Danh sách tất cả các model được sử dụng trong controller
	 */
	var $uses = array('EditablePage');
	
	/**
	 @var $helpers
	 @brief Danh sách tất cả các Helper được sử dụng trong view
	 */
	var $helpers = array('Form','Wysiwyg');
	
	/**
	 @var $configs
	 @brief Tên của biến config
	 */
	var $configs = array();
	
	/**
	 @var $alias
	 @brief Tên alias của trang cần chỉnh sửa thông tin
	 */
	var $alias = 'about_us';
	
	/**
	 * Phương thức được sử dụng để thực hiện các xử lý trước khi bắt đầu 1 hành động
	 */
	function beforeFilter() {
		parent::beforeFilter();
		if (isset($this->params['pass'][0])) {
			if ($this->params['action'] == 'edit') {
				$this->id = $this->params['pass'][0];
			} else {
				$this->alias = $this->params['pass'][0];
			}
		}
		
		if (get_class($this) == 'EditContentController') {
			$this->configs = $this->EditablePage->loadConfig();
			$this->configs = $this->EditablePage->mergeConfig($this->configs, array(
				'configFolder'		=>	'edit_content',
				'cacheName'		=> 'edit_content_configs',
				'names'				=> array('EditablePage')
			));
			$this->set('configs', $this->configs);
		}
	}
	
	/**
	 * Override redirect function
	 * (non-PHPdoc)
	 * @see cake/libs/controller/Controller#redirect($url, $status, $exit)
	 */
	function redirect($url) {
		if (is_array($url)) {
			$url[] = $this->alias;
		}
		parent::redirect($url);
	}
	
	/**
	 * Phương thức được sử dụng để liệt kê ra tất cả các trang cùng cấp với trang hiện tại
	 */
	function listing() {
		$pages = $this->EditablePage->getList($this, $this->configs['EditablePage']);
		$this->set('pages', $pages);
	}
	
	/**
	 * Phương thức được sử dụng để hiển thị thông tin của 1 trang ứng với alias truyền vào
	 */
	function index($alias=null) {
		if ($alias == null) {
			$alias = $this->alias;
		}
		
		// Load page information
		$info = $this->EditablePage->find('first', array(
			'conditions'	=>	array(
				'EditablePage.alias'	=>	$alias	
			),
			'fields'	=>	array('id','alias', 'content')
		));
		
		// If info not exit.
		if (empty($info)) {
			exit(__("Mã alias không đúng. Vui lòng thử lại", true));
		} else {
			$this->set('alias', $alias);
			$this->data = $info;
			
			// load dữ liệu trong trường hợp phát sinh lỗi
			$this->__checkError('EditablePage');
		}
	}
	
	/**
	 * Phương thức được sử dụng để cập nhật thông tin của 1 trang ứng với alias truyền vào
	 */
	function edit($id=null) {
		//$this->data['EditablePage']['id'] = $info['EditablePage']['id'];
		try {
			// Create Category Information
			$this->data = $this->EditablePage->validateData($this->data);
		} catch (Exception $ex) {
			$this->__setError('EditablePage');
			$this->Session->setFlash($ex->getMessage());
			$this->redirect(array(
				'action'	=>	'index'
			));
		}
		
		if ($this->EditablePage->save($this->data)) {
			$this->Session->setFlash(__("Trang đã được cập nhật thành công!", true));

			$this->redirect(array(
				'action'=>'index'
			));
		} else {
			$this->__setError('EditablePage');
			$this->Session->setFlash(__("Không thể lưu thông tin. Bạn vui lòng thử lại", true));
			$this->redirect(array(
				'action'=>'index',
			));
		}
	}
}
?>